import os
from dotenv import load_dotenv

# 加载环境变量文件（.env）中的配置，优先于系统环境变量
load_dotenv()


class Config:
    """项目全局配置类

    集中管理项目中所有可配置参数，包括数据库连接、浏览器设置、路径配置等。
    支持通过环境变量或.env文件进行配置，未配置时使用默认值。
    """

    # 数据库配置
    DB_HOST = os.getenv('DB_HOST', '81.70.180.20')  # 数据库主机地址，默认值为测试环境地址
    DB_PORT = int(os.getenv('DB_PORT', 3306))  # 数据库端口，默认MySQL默认端口3306
    DB_USER = os.getenv('DB_USER', 'root')  # 数据库用户名，默认root
    DB_PASSWORD = os.getenv('DB_PASSWORD', 'Jqx520428$')  # 数据库密码，默认测试环境密码
    DB_NAME = os.getenv('DB_NAME', 'roncoo_mini_pay_demo')  # 数据库名称，默认支付演示库

    # 浏览器配置
    BROWSER = os.getenv('BROWSER', 'chrome')  # 浏览器类型，支持chrome/firefox/edge，默认chrome

    # 测试环境配置
    TEST_URL = os.getenv('TEST_URL', 'http://81.70.180.20:7009/roncoo-pay-web-boss/login')  # 测试系统登录页URL

    # 超时时间配置（单位：秒）
    IMPLICITLY_WAIT = 10  # Selenium隐式等待时间，全局元素查找超时
    EXPLICITLY_WAIT = 20  # Selenium显式等待时间，针对特定元素的超时设置

    # 路径配置（均为绝对路径）
    SCREENSHOT_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'reports', 'screenshots')  # 截图保存目录
    LOG_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'logs')  # 日志文件保存目录
    REPORT_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'reports')  # 测试报告保存目录
    DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data')  # 测试数据文件保存目录


# 创建配置实例，供项目其他模块直接导入使用
config = Config()